草庐IT

c++ getline和stringstream

全部标签

c++ - Getline忽略输入的第一个字符

我刚刚开始使用C++中的数组,但在获取数组的第一个字符时遇到了问题。这是我的代码,1-我输入一个名字,例如“Jim”charname[30];cin.ignore();cin.getline(name,30);2-我马上尝试计算数组cout我确定它会打印“J”。我做错了什么? 最佳答案 这是cin.ignore的签名:istream&ignore(streamsizen=1,intdelim=EOF);因此,如果您在不带任何参数的情况下调用忽略函数,默认情况下它将忽略输入中的“1”字符。在这种情况下,它忽略了“J”。删除忽略调用,您

c++ - getline 和 "strange characters"的问题

我有一个奇怪的问题,我用wifstreama("a.txt");wstringline;while(a.good())//!a.eof()nothelping{getline(a,line);//...wcout它可以很好地处理这样的txt文件http://www.speedyshare.com/files/29833132/a.txt(抱歉链接,但它只有80个字节,所以如果我在SO换行符上c/p丢失,那么获取它应该不是问题)但是当我将例如水(来自http://en.wikipedia.org/wiki/UTF-16/UCS-2#Examples)添加到作为加载停止的行的任何行时。我的

c++ - 如何检查 stringstream>>string 是否不会在字符串上放置任何内容?

例如,当解析一个文本文件时,有时这个文件有这样的东西:keywordastringherekeywordanotherstringkeywordkeywordagainastring请注意,第3行有一个空字符串(无或空格)。问题是当您执行stringstream>>laststring时,stringstream有一个空字符串(null或只有空格),它不会覆盖“laststring”,它什么都不做。无论如何要事先检查一下这种情况?我不想创建一个临时空字符串只是为了检查它在stringstream之后是否仍然是空的>>,看起来很蹩脚。 最佳答案

c++ - 从 cin 读取 getline 到字符串流 (C++)

所以我尝试从标准输入中读取这样的输入(使用cin):AdamEnglish85CharlieMath76EricaHistory82RichardScience90我的目标是最终将每个数据片段存储在我创建的数据结构中它自己的单元格中,所以基本上我想解析输入,以便每个数据片段都是独立的。由于每一行输入都是由用户一次输入一个,所以每次我都会得到一整行我需要解析的输入。目前我正在尝试这样的事情:stringstreamss;getline(cin,ss);stringname;stringcourse;stringgrade;ss>>name>>course>>grade;我遇到的错误是XC

c++ - stringstream clear 和 str 有什么区别

我只是想知道clear()和str("")之间有什么区别;例如:stringstreamss("StackOverflow");ss.clear();ss.str("");我想知道潜在的技术差异。 最佳答案 clear()清除stringstream中的错误状态标志。也就是说它将错误状态设置为goodbit(等于零)。str("")将关联的字符串对象设置为空字符串。他们实际上做着完全不同的事情。名字的特殊选择只会让它听起来好像他们执行类似的任务。 关于c++-stringstreamcl

c++ - getline(cin, String) 在没有另一个输入的情况下接收输入

我的代码是这样的,stringaString;cin>>aString;cout)gets:"每次我运行它时,我都会输入“12”,我得到“12”和“”。我想知道为什么getline会在没有用户输入的情况下收到。我可以理解,当我输入“1224”之类的内容时,cin将获得“12”,而getline应该获得其余部分。(另外,如果有人能回答,中间的空格被视为cin的结尾,那么为什么它会传递给getline?)刚开始使用C++上的字符串,所以请不要让它太难。谢谢你。 最佳答案 当您将标准流提取与getline混合使用时,getline有时会返

c++ - cin.get() 和 cin.getline() 的区别

我是编程新手,我对C++中的get()和getline()函数有一些疑问。我对这两个功能的理解:getline()函数读取整行,并使用回车键传递的换行符来标记输入结束。get()函数很像getline()但不是读取并丢弃换行符,get()将该字符留在输入队列。我正在阅读的书(C++PrimerPlus)建议使用get()而不是getline()。我的困惑是getline()并不比get()更安全,因为它确保以'\n'结束行。另一方面,get()只会将字符卡在输入队列中,从而可能导致问题? 最佳答案 有相同数量的优点和缺点,并且-本质

c++ - 可以使用临时的 stringstream 对象吗?

这个有效:stringstreamtemp;temp(transform是一个接受string并返回string的函数;i是一个int)。然而,我试图让C++11创建一个没有名字的临时对象并没有奏效:result_stream我认为它会起作用,因为第二个应该只返回第一个参数,我就可以使用str()在那上面。但是我得到这个错误:error:'classstd::basic_ostream'hasnomembernamed'str'我正在使用g++4.8.1(MinGW-W64)。有没有办法做到这一点(即使用未命名的临时文件编写这样的代码)?(上面的代码有点简化,实际代码涉及对以外的参数使

getline错误,阅读每一行

#include#include#include#include#includeusingnamespacestd;intmain(){charinput;while(true){input=_getch();cout错误我得到:没有超载函数“getline”的实例与参数列表匹配我想做的是在文本文件中实现每行看答案getline将字符串作为第二个参数,而不是字符串数组。

android getLine1Number() 返回空字符串

这个问题在这里已经有了答案:MSISDN:IsitaSIMCardData?WhyallTheProvidedFunction(fromBlackberryandAndroid)tofetchMSISDNnotreliable?(3个答案)关闭5年前。我想获取用户的手机号码,默认取为用户名,当我使用下面的代码获取手机号码时,返回一个空字符串TelephonyManagertMgr=(TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);mPhoneNumber=tMgr.